Arduino তে Timer Functions ব্যবহার করে নির্দিষ্ট সময়ের ব্যবধানের পর পর কিছু কাজ করা যায়। Timer Functions হল এমন কিছু ফাংশন যা একটি নির্দিষ্ট সময় বা ইন্টারভালে কাজ সম্পন্ন করতে সহায়তা করে। Arduino তে সাধারণত delay()
, millis()
, এবং micros()
ফাংশন ব্যবহার করা হয় টাইমার ফাংশন হিসেবে। এসব ফাংশন বিভিন্ন প্রজেক্টে সঠিক সময় ব্যবধান ধরে রাখতে এবং ইন্টারভাল ভিত্তিক কাজ সম্পন্ন করতে সহায়তা করে।
delay()
: এই ফাংশন নির্দিষ্ট সময়ের জন্য প্রোগ্রামের কার্যক্রম স্থগিত রাখে। এটি মিলিসেকেন্ডে সময় গ্রহণ করে।millis()
: এটি প্রোগ্রাম শুরু হওয়ার পর থেকে কত মিলিসেকেন্ড পেরিয়ে গেছে তা বলে। এটি টাইমার হিসেবেও কাজ করতে পারে।micros()
: এটি প্রোগ্রাম শুরু হওয়ার পর থেকে কত মাইক্রোসেকেন্ড পেরিয়ে গেছে তা বলে।delay()
ফাংশনdelay()
ফাংশন ব্যবহার করলে নির্দিষ্ট সময়ের জন্য প্রোগ্রামের কার্যক্রম স্থগিত হয়। এটি সাধারণত ছোট প্রকল্পে ব্যবধান তৈরি করতে ব্যবহার করা হয়।
void setup() {
pinMode(LED_BUILTIN, OUTPUT);
}
void loop() {
digitalWrite(LED_BUILTIN, HIGH); // LED অন
delay(1000); // ১ সেকেন্ড অপেক্ষা
digitalWrite(LED_BUILTIN, LOW); // LED অফ
delay(1000); // ১ সেকেন্ড অপেক্ষা
}
কাজ: এখানে LED প্রতি ১ সেকেন্ড অন্তর অন এবং অফ হবে।
millis()
ফাংশনmillis()
ফাংশন দিয়ে প্রোগ্রাম শুরু হওয়ার পর থেকে কত মিলিসেকেন্ড পেরিয়ে গেছে তা জানা যায়। এটি টাইমার হিসেবে ব্যবহৃত হয় এবং প্রোগ্রামের কার্যক্রমে কোন প্রকার বিলম্ব ঘটায় না।
unsigned long previousMillis = 0; // পূর্বের সময় সংরক্ষণ
const long interval = 1000; // ১ সেকেন্ডের ইন্টারভাল
void setup() {
pinMode(LED_BUILTIN, OUTPUT);
}
void loop() {
unsigned long currentMillis = millis(); // বর্তমান সময় পড়া
if (currentMillis - previousMillis >= interval) {
previousMillis = currentMillis; // পূর্বের সময় আপডেট করা
digitalWrite(LED_BUILTIN, !digitalRead(LED_BUILTIN)); // LED-এর অবস্থা পরিবর্তন করা
}
}
কাজ: LED প্রতি ১ সেকেন্ড অন্তর অন এবং অফ হবে, কিন্তু প্রোগ্রামের অন্য অংশ চালু থাকবে।
micros()
ফাংশনmicros()
ফাংশন millis()
এর মতোই কাজ করে, তবে এটি মাইক্রোসেকেন্ড হিসেবে সময় পড়ে। এটি আরও সূক্ষ্ম সময় ব্যবধানের প্রয়োজন হলে ব্যবহার করা হয়।
unsigned long startTime = 0;
void setup() {
Serial.begin(9600);
}
void loop() {
startTime = micros(); // বর্তমান মাইক্রোসেকেন্ড পড়া
Serial.print("Current Time: ");
Serial.println(startTime); // মাইক্রোসেকেন্ড আউটপুট
delay(1000); // ১ সেকেন্ড অপেক্ষা
}
কাজ: এখানে প্রতিবার লুপ চালানোর সময় বর্তমান সময় মাইক্রোসেকেন্ডে প্রিন্ট করা হবে।
millis()
এবং micros()
প্রোগ্রামের অন্য কার্যক্রমে বিলম্ব ঘটায় না, তাই একই সাথে একাধিক কাজ সম্পন্ন করা সম্ভব।millis()
ব্যবহার করে কোড নন-ব্লকিং করা যায়, যা প্রোগ্রামকে আরও কার্যকর করে তোলে।delay()
ফাংশন প্রোগ্রামের কার্যক্রম থামিয়ে দেয়: delay()
ব্যবহার করলে প্রোগ্রামের অন্য কাজগুলো স্থগিত থাকবে, তাই জটিল প্রকল্পে এটি কম ব্যবহার করা ভালো।millis()
এবং micros()
রোলওভার সমস্যা: ৪৯.৭ দিন পর millis()
এবং প্রায় ৭১ মিনিট পর micros()
পুনরায় ০ থেকে শুরু হয়। বড় প্রোজেক্টে এটি মাথায় রাখা গুরুত্বপূর্ণ।Timer Functions এর সঠিক ব্যবহার Arduino প্রোগ্রামে কার্যক্রম সময়মতো সম্পন্ন করতে এবং প্রোগ্রামের কার্যকারিতা বৃদ্ধি করতে সাহায্য করে।
common.read_more